import { useUserStore } from '@/store/user'

/**
 * 检查用户是否有指定权限
 * @param {string} perm - 权限编码
 * @returns {boolean} - 是否有权限
 */
export function hasPerm(perm) {
  const userStore = useUserStore()
  
  // 如果没有权限列表，返回false
  if (!userStore.permissions || userStore.permissions.length === 0) {
    return false
  }
  
  // 检查是否有完全匹配的权限
  if (userStore.permissions.includes(perm)) {
    return true
  }
  
  // 检查是否有通配符权限（如：system:* 表示所有系统管理权限）
  const wildcardPerm = perm.split(':').slice(0, -1).join(':') + ':*'
  if (userStore.permissions.includes(wildcardPerm)) {
    return true
  }
  
  // 检查是否有超级管理员权限
  if (userStore.permissions.includes('admin:*') || userStore.permissions.includes('*')) {
    return true
  }
  
  return false
}

/**
 * 检查用户是否有多个权限中的任意一个
 * @param {string[]} perms - 权限编码数组
 * @returns {boolean} - 是否有权限
 */
export function hasAnyPerm(perms) {
  return perms.some(perm => hasPerm(perm))
}

/**
 * 检查用户是否有所有指定权限
 * @param {string[]} perms - 权限编码数组
 * @returns {boolean} - 是否有权限
 */
export function hasAllPerms(perms) {
  return perms.every(perm => hasPerm(perm))
}

/**
 * 获取用户权限列表
 * @returns {string[]} - 权限列表
 */
export function getUserPermissions() {
  const userStore = useUserStore()
  return userStore.permissions || []
}

/**
 * 检查用户是否已登录
 * @returns {boolean} - 是否已登录
 */
export function isLoggedIn() {
  const userStore = useUserStore()
  return !!userStore.token
} 